iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
DevOps

30天的社群機器人之旅系列 第 8

Day 08 FileMessage

  • 分享至 

  • xImage
  •  

各位想到了嗎,我們還有檔案的訊息沒有處裡到(我是很常使用直接傳檔案給其他人啦),因此 FileMessage 也需要進行處理。

不過 Line 是無法直接對機器人傳送檔案的,因此我們可以先建立一個 1 人群組,再將機器人拉進我們的群組裡面,這樣就可以測試 FileMessage 了。

加完群組後,我們參考 官方文件 可以得知,有 File Name 可以直接取用,而且跟圖片一樣皆需要透過另一隻 API 進行下載。

因此我們可以再將前面的處理函式改成這樣。

@handler.add(MessageEvent, message=(ImageMessage, VideoMessage, AudioMessage, FileMessage))
def handle_media(event):
    content = line_bot_api.get_message_content(event.message.id)
    file_name = f"{event.message.id}.{content.content_type.split('/')[1].lower()}" if event.message.type != "file" else event.message.file_name
    os.makedirs(f"Media/{event.message.type.title()}", exist_ok=True)
    with open(F"Media/{event.message.type.title()}/{file_name}", "wb") as fp:
            for iter_data in content.iter_content():
                fp.write(iter_data)
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.id)
    )

這樣就可以同時處理圖片、影片、聲音及檔案的訊息了。

那麼就先到這邊,只是我們現在回復的訊息有點單調,那我們要如何美化我們回復的訊息呢?

大家掰~掰~


上一篇
Day 07 ImageMessage, VideoMessage & AudioMessage
下一篇
Day 09 FlexMessage
系列文
30天的社群機器人之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言